neural/rs/dialect/src/lib.rs

//! neural dialect — expands a [`sigil::Sentence`] into the cyberlinks it lands as.
//!
//! A dialect supplies structure for intent: the neuron says *what*
//! (`cat is-a animal`), the dialect builds the *right links*. This is the
//! settled relation model — a typed relation is a link **on the axon** of the
//! base pair:
//!
//! ```text
//! cat is-a animal   →   [ cat → animal ,  H(cat,animal) → is_a ]
//!                         └ the bare edge   └ the type, on its axon
//! ```
//!
//! The wire stays untyped (`{from,to,…}`); the relation-word `is_a` is a
//! first-class particle φ* can rank; and one pair can carry several types
//! (`→ is_a`, `→ causes`) whose tension is the polysemy signal. No new
//! mechanism — the axon `H(from,to)` already materializes on link (bbg A6).

use sigil::{word_particle, Particle, Sentence};

/// One directed cyberlink to stake: `from → to`.
pub type Edge = (Particle, Particle);

/// Expand a sentence into its ordered edges under the base dialect:
///   1. the bare relationship — `subject → object`
///   2. the type on its axon   — `axon_id(subject,object) → relation-word`
pub fn expand(s: &Sentence) -> Vec<Edge> {
    let subject = word_particle(&s.subject);
    let object = word_particle(&s.object);
    let relation = word_particle(&s.relation);
    let axon = bbg::state::axon_id(&subject, &object);
    vec![(subject, object), (axon, relation)]
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn expands_to_base_and_axon_type() {
        let s = sigil::parse("cat is-a animal").unwrap();
        let edges = expand(&s);
        assert_eq!(edges.len(), 2, "base link + axon-type link");

        // 1. the bare pair
        assert_eq!(edges[0], (word_particle("cat"), word_particle("animal")));

        // 2. the type sits on the axon of the base pair, not on a new node
        let axon = bbg::state::axon_id(&word_particle("cat"), &word_particle("animal"));
        assert_eq!(edges[1], (axon, word_particle("is-a")));
    }
}

Homonyms

soft3/nox/rs/lib.rs
warriors/trisha/honeycrisp/lib.rs
soft3/strata/src/lib.rs
warriors/trisha/rs/lib.rs
cyb/optica/src/lib.rs
cyb/src-tauri/src/lib.rs
soft3/foculus/src/lib.rs
soft3/mudra/src/lib.rs
cyb/honeycrisp/src/lib.rs
soft3/glia/run/lib.rs
cyb/prysm/rs/lib.rs
soft3/lens/src/lib.rs
neural/trident/src/lib.rs
soft3/tru/rs/lib.rs
soft3/mir/src/lib.rs
warriors/trisha/wgpu/lib.rs
soft3/cybergraph/src/lib.rs
soft3/glia/import/lib.rs
soft3/hemera/rs/src/lib.rs
neural/rs/sigil/src/lib.rs
neural/rune/rs/lower/lib.rs
soft3/zheng/rs/src/lib.rs
soft3/radio/iroh-relay/src/lib.rs
soft3/radio/iroh-dns-server/src/lib.rs
soft3/strata/kuro/rs/lib.rs
neural/rune/rs/mold/lib.rs
soft3/radio/iroh-willow/src/lib.rs
soft3/lens/ikat/src/lib.rs
neural/rs/link/src/lib.rs
soft3/strata/core/src/lib.rs
soft3/radio/iroh-docs/src/lib.rs
soft3/strata/ext/src/lib.rs
soft3/radio/iroh-blobs/src/lib.rs
neural/rune/rs/parse/lib.rs
neural/rs/darwin-sys/src/lib.rs
neural/rs/macros/src/lib.rs
soft3/lens/brakedown/src/lib.rs
neural/rs/mir-format/src/lib.rs
soft3/strata/compute/src/lib.rs
cyb/honeycrisp/unimem/src/lib.rs
cyb/honeycrisp/rane/src/lib.rs
soft3/hemera/wgsl/src/lib.rs
neural/rs/codegen/src/lib.rs
soft3/radio/iroh-car/src/lib.rs
soft3/lens/porphyry/src/lib.rs
soft3/lens/binius/src/lib.rs
cyb/honeycrisp/acpu/src/lib.rs
neural/rune/rs/lex/lib.rs
soft3/radio/iroh-base/src/lib.rs
neural/eidos/rs/src/lib.rs
neural/rune/rs/prysm/lib.rs
soft3/radio/iroh-gossip/src/lib.rs
cyb/cyb/cyb-services/src/lib.rs
neural/rune/rs/interp/lib.rs
soft3/lens/assayer/src/lib.rs
soft3/bbg/rs/src/lib.rs
soft3/strata/nebu/rs/lib.rs
neural/rune/rs/ast/lib.rs
neural/rune/rs/parse-pure/lib.rs
soft3/lens/core/src/lib.rs
soft3/radio/iroh/src/lib.rs
cyb/honeycrisp/aruminium/src/lib.rs
neural/rune/rs/subject/lib.rs
neural/rs/core/src/lib.rs
soft3/radio/cyber-bao/src/lib.rs
soft3/strata/proof/src/lib.rs
soft3/radio/iroh-ffi/src/lib.rs
neural/rune/rs/compile/lib.rs
cyb/evy/crates/evy_dialect/src/lib.rs
neural/inf/rs/ast/src/lib.rs
cyb/wysm/crates/wasi/src/lib.rs
cyb/evy/crates/evy_platform_caps/src/lib.rs
cyb/wysm/crates/core/src/lib.rs
cyb/evy/forks/bevy_core_pipeline/src/lib.rs
neural/inf/rs/parse/src/lib.rs
cyb/evy/crates/evy_engine_tasks/src/lib.rs
neural/inf/rs/lower/src/lib.rs
soft3/radio/tests/integration/src/lib.rs
neural/inf/rs/plan/src/lib.rs
cyb/wysm/crates/collections/src/lib.rs
cyb/evy/forks/bevy_animation/src/lib.rs
neural/rs/tests/macro-integration/src/lib.rs
cyb/wysm/crates/c_api/src/lib.rs
cyb/evy/crates/evy_radio/src/lib.rs
cyb/evy/forks/bevy_tasks/src/lib.rs
cyb/evy/crates/evy_prysm_core/src/lib.rs
soft3/radio/iroh-ffi/iroh-js/src/lib.rs
soft3/strata/trop/rs/src/lib.rs
neural/inf/rs/value/src/lib.rs
cyb/evy/crates/evy_diagnostic/src/lib.rs
cyb/evy/forks/bevy_render/src/lib.rs
soft3/strata/jali/wgsl/src/lib.rs
soft3/strata/kuro/wgsl/src/lib.rs
neural/inf/rs/eval/src/lib.rs
cyb/wysm/crates/c_api/macro/lib.rs
cyb/evy/forks/bevy_post_process/src/lib.rs
cyb/evy/forks/bevy_image/src/lib.rs
soft3/strata/genies/rs/src/lib.rs
cyb/wysm/crates/wast/src/lib.rs
cyb/evy/forks/bevy_gizmos_render/src/lib.rs
cyb/evy/crates/evy_engine_dispatch/src/lib.rs
soft3/radio/iroh/bench/src/lib.rs
cyb/evy/forks/bevy_anti_alias/src/lib.rs
neural/inf/rs/source/src/lib.rs
neural/trident/editor/zed/src/lib.rs
cyb/evy/forks/bevy_sprite/src/lib.rs
cyb/wysm/crates/wasmi/src/lib.rs
cyb/evy/forks/bevy_mesh/src/lib.rs
cyb/evy/forks/bevy_pbr/src/lib.rs
neural/inf/rs/oracle/src/lib.rs
soft3/strata/nebu/wgsl/src/lib.rs
neural/inf/rs/lex/src/lib.rs
cyb/evy/forks/bevy_diagnostic/src/lib.rs
soft3/tape/impl/rust/src/lib.rs
cyb/evy/forks/bevy_transform/src/lib.rs
cyb/evy/forks/bevy_sprite_render/src/lib.rs
cyb/evy/forks/bevy_gizmos/src/lib.rs
cyb/evy/forks/bevy_ecs/src/lib.rs
cyb/evy/crates/evy_ecs_storage/src/lib.rs
soft3/strata/genies/wgsl/src/lib.rs
cyb/wysm/crates/c_api/artifact/lib.rs
cyb/evy/crates/evy_engine_core/src/lib.rs
cyb/evy/forks/naga/src/lib.rs
cyb/wysm/crates/fuzz/src/lib.rs
soft3/strata/jali/rs/src/lib.rs
soft3/strata/trop/wgsl/src/lib.rs
cyb/wysm/crates/ir/src/lib.rs
bootloader/go-cyber/cw/contracts/graph-filter/src/lib.rs
bootloader/go-cyber/cw/packages/cyber-std-test/src/lib.rs
bootloader/go-cyber/cw/packages/cyber-std/src/lib.rs
bootloader/go-cyber/cw/contracts/std-test/src/lib.rs

Graph