summaryrefslogtreecommitdiff
path: root/crates/elfmind/src/main.rs
blob: 01fd4bc83473dae45cb5e26f371c7c35a187e10e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
use elfmind::*;

fn main() {
    let mut db = Database::default();
    db.query()
        .fact(Relation::HasItem((CharacterUnmasked::Assagioli, Item::Apple)))
        .fact(Relation::FriendOf((CharacterUnmasked::Bombieri, CharacterUnmasked::Cagliostro)))
        .learn();
    // db.query().rule(Rule {
    //     head: RelationHole::UsedItemAt((
    //         Hole::Val(CharacterUnmasked::Assagioli),
    //         Hole::Var(Var(0)),
    //         Hole::Var(Var(1)),
    //     )),
    //     body: vec![
    //         RelationHole::TimeIs(Hole::Var(Var(1))),
    //         RelationHole::HasItem((Hole::Val(CharacterUnmasked::Assagioli), Hole::Var(Var(0)))),
    //     ],
    // }).learn();
    // db.query().rule(Rule {
    //     head: RelationHole::FriendOf((
    //         Hole::Val(CharacterUnmasked::Cagliostro),
    //         Hole::Var(Var(0)),
    //     )),
    //     body: vec![
    //         RelationHole::TimeIs(Hole::Var(Var(1))),
    //         RelationHole::UsedItemAt((Hole::Var(Var(0)), Hole::Val(Item::Apple), Hole::Var(Var(1)))),
    //     ],
    // }).learn();
    // db.query().rule(Rule {
    //     head: RelationHole::FriendOf((
    //         Hole::Var(Var(0)),
    //         Hole::Var(Var(2)),
    //     )),
    //     body: vec![
    //         RelationHole::FriendOf((Hole::Var(Var(0)), Hole::Var(Var(1)))),
    //         RelationHole::FriendOf((Hole::Var(Var(1)), Hole::Var(Var(2)))),
    //     ],
    // }).learn();
    db.query().rule(Rule {
        head: RelationHole::FriendOf((
            Hole::Var(Var(0)),
            Hole::Var(Var(1)),
        )),
        body: vec![
            RelationHole::FriendOf((Hole::Var(Var(1)), Hole::Var(Var(0)))),
        ],
    }).learn();
    println!("{}", db);
    // println!("{}", db.query().fact(Relation::TimeIs(8)).fact(Relation::TimeIs(9)).ask());
}