← Back

Module neurosymbolic

struct DifferentiableLogic

Differentiable logic gate with soft/fuzzy semantics. Allows end-to-end gradient flow through logical operations.

Source: neurosymbolic.joule:27

fn new(temperature: f64) -> Self

Create a new differentiable logic module.

Source: neurosymbolic.joule:34

fn default() -> Self

Default temperature (1.0)

Source: neurosymbolic.joule:39

fn and(&self, a: &Tensor, b: &Tensor) -> Tensor

Source: neurosymbolic.joule:46

fn or(&self, a: &Tensor, b: &Tensor) -> Tensor

Source: neurosymbolic.joule:53

fn not(&self, a: &Tensor) -> Tensor

Source: neurosymbolic.joule:62

fn implies(&self, a: &Tensor, b: &Tensor) -> Tensor

Source: neurosymbolic.joule:69

fn equiv(&self, a: &Tensor, b: &Tensor) -> Tensor

Source: neurosymbolic.joule:79

fn forall(&self, tensor: &Tensor, dim: i64) -> Tensor

Source: neurosymbolic.joule:87

fn exists(&self, tensor: &Tensor, dim: i64) -> Tensor

Source: neurosymbolic.joule:97

fn godel_and(&self, a: &Tensor, b: &Tensor) -> Tensor

Source: neurosymbolic.joule:106

fn godel_or(&self, a: &Tensor, b: &Tensor) -> Tensor

Source: neurosymbolic.joule:112

fn lukasiewicz_and(&self, a: &Tensor, b: &Tensor) -> Tensor

Source: neurosymbolic.joule:119

fn lukasiewicz_or(&self, a: &Tensor, b: &Tensor) -> Tensor

Source: neurosymbolic.joule:128

struct Predicate

A predicate in a Logic Tensor Network.

Source: neurosymbolic.joule:138

fn unary(name: &str, embedding_dim: usize, hidden_dim: usize) -> Self

Create a unary predicate (e.g., "is_cat(x)").

Source: neurosymbolic.joule:149

fn binary(name: &str, embedding_dim: usize, hidden_dim: usize) -> Self

Create a binary predicate (e.g., "likes(x, y)").

Source: neurosymbolic.joule:165

fn evaluate(&self, args: &[&Tensor]) -> Tensor

Source: neurosymbolic.joule:182

enum Formula

A formula in first-order logic.

Source: neurosymbolic.joule:196

enum Term

A term in a formula.

Source: neurosymbolic.joule:223

struct Rule

A rule with a weight for soft constraints.

Source: neurosymbolic.joule:231

fn new(name: &str, formula: Formula, weight: f64) -> Self

Create a new rule.

Source: neurosymbolic.joule:242

fn implies(name: &str, antecedent: Formula, consequent: Formula, weight: f64) -> Self

Create an implication rule: antecedent → consequent

Source: neurosymbolic.joule:251

struct LogicTensorNetwork

Logic Tensor Network for neurosymbolic reasoning.

Source: neurosymbolic.joule:257

fn new(num_entities: usize, embedding_dim: usize) -> Self

Create a new LTN.

Source: neurosymbolic.joule:272

fn add_predicate(&mut self, predicate: Predicate)

Add a predicate.

Source: neurosymbolic.joule:283

fn add_unary_predicate(&mut self, name: &str, hidden_dim: usize)

Add a unary predicate.

Source: neurosymbolic.joule:288

fn add_binary_predicate(&mut self, name: &str, hidden_dim: usize)

Add a binary predicate.

Source: neurosymbolic.joule:293

fn add_rule(&mut self, rule: Rule)

Add a rule.

Source: neurosymbolic.joule:298

fn embed(&self, entity_id: usize) -> Tensor

Get entity embedding.

Source: neurosymbolic.joule:303

fn evaluate_atom(&self, predicate: &str, args: &[usize]) -> Tensor

Source: neurosymbolic.joule:310

fn rule_loss(&self, sample_entities: &[usize]) -> Tensor

Source: neurosymbolic.joule:326

fn evaluate_formula(&self, formula: &Formula, entities: &[usize]) -> Tensor

Evaluate a formula on a sample of entities.

Source: neurosymbolic.joule:341

fn train_step<O: Optimizer>(&mut self, optimizer: &mut O, sample_entities: &[usize]) -> f64

Source: neurosymbolic.joule:394

enum KGEmbeddingMethod

Supported knowledge graph embedding methods.

Source: neurosymbolic.joule:411

struct Triple

A triple in a knowledge graph: (head, relation, tail)

Source: neurosymbolic.joule:423

struct KnowledgeGraph

Knowledge Graph with learnable embeddings.

Source: neurosymbolic.joule:430

fn new(

Create a new knowledge graph.

Source: neurosymbolic.joule:451

fn add_triple(&mut self, head: usize, relation: usize, tail: usize)

Add a triple.

Source: neurosymbolic.joule:470

fn score(&self, head: usize, relation: usize, tail: usize) -> Tensor

Source: neurosymbolic.joule:476

fn get_entity_embedding(&self, entity: usize) -> Tensor

Get entity embedding.

Source: neurosymbolic.joule:508

fn get_relation_embedding(&self, relation: usize) -> Tensor

Get relation embedding.

Source: neurosymbolic.joule:514

fn margin_loss(&self, positive: &Triple, negative: &Triple) -> Tensor

Source: neurosymbolic.joule:521

fn train_step<O: Optimizer>(

Source: neurosymbolic.joule:532

fn predict_tail(&self, head: usize, relation: usize, top_k: usize) -> Vec<(usize, f64)>

Source: neurosymbolic.joule:557

struct Variable

A variable in a constraint satisfaction problem.

Source: neurosymbolic.joule:577

fn new(name: &str, domain_size: usize) -> Self

Create a new variable.

Source: neurosymbolic.joule:588

fn probabilities(&self) -> Tensor

Get probability distribution over domain.

Source: neurosymbolic.joule:599

fn assignment(&self) -> usize

Get most likely assignment.

Source: neurosymbolic.joule:604

trait Constraint: Send + Sync

A constraint in a CSP.

Source: neurosymbolic.joule:610

fn evaluate(&self, variables: &HashMap<String, &Variable>) -> Tensor;

Evaluate satisfaction (0 = violated, 1 = satisfied).

Source: neurosymbolic.joule:612

fn variables(&self) -> Vec<String>;

Get involved variable names.

Source: neurosymbolic.joule:615

struct BinaryConstraint

Binary constraint: two variables must satisfy a relation.

Source: neurosymbolic.joule:619

fn all_different(var1: &str, var2: &str, domain_size: usize) -> Self

Create an all-different constraint.

Source: neurosymbolic.joule:628

fn equal(var1: &str, var2: &str, domain_size: usize) -> Self

Create an equality constraint.

Source: neurosymbolic.joule:641

fn evaluate(&self, variables: &HashMap<String, &Variable>) -> Tensor

Source: neurosymbolic.joule:651

fn variables(&self) -> Vec<String>

Source: neurosymbolic.joule:660

struct NeuralCSP

Neural Constraint Satisfaction Problem solver.

Source: neurosymbolic.joule:666

fn new() -> Self

Create a new CSP.

Source: neurosymbolic.joule:675

fn add_variable(&mut self, name: &str, domain_size: usize)

Add a variable.

Source: neurosymbolic.joule:683

fn add_constraint(&mut self, constraint: Box<dyn Constraint>)

Add a constraint.

Source: neurosymbolic.joule:688

fn total_satisfaction(&self) -> Tensor

Source: neurosymbolic.joule:694

fn loss(&self) -> Tensor

Source: neurosymbolic.joule:711

fn solve(&mut self, max_iterations: usize, learning_rate: f64) -> bool

Source: neurosymbolic.joule:718

fn assignments(&self) -> HashMap<String, usize>

Get current assignments.

Source: neurosymbolic.joule:745

struct NeuralRule

A neural rule with learned confidence.

Source: neurosymbolic.joule:757

fn new(name: &str, antecedents: Vec<String>, consequent: String) -> Self

Create a new rule.

Source: neurosymbolic.joule:770

struct NeuralRuleEngine

Neural rule engine for reasoning.

Source: neurosymbolic.joule:781

fn new() -> Self

Create a new rule engine.

Source: neurosymbolic.joule:790

fn add_rule(&mut self, rule: NeuralRule)

Add a rule.

Source: neurosymbolic.joule:798

fn forward_chain(

Source: neurosymbolic.joule:804

fn test_differentiable_logic()

Source: neurosymbolic.joule:868

fn test_knowledge_graph()

Source: neurosymbolic.joule:889

fn test_neural_csp()

Source: neurosymbolic.joule:900