8000 GitHub - dhilst/logicpy: Simple logic to igraph toy language
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

dhilst/logicpy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

A simple logic to igraph toy lang

Examples:

python -i logicpy/parser.py <<< 'exist (v): or(and(age_lt(v, 25), gender_eq(v, "f")), name_eq(v, "Frank"))'
Vertices [igraph.Vertex(<igraph.Graph object at 0x7bb25a9c6950>, 0, {'name': 'Alice', 'age': 25, 'gender': 'f'}),
 igraph.Vertex(<igraph.Graph object at 0x7bb25a9c6950>, 1, {'name': 'Bob', 'age': 31, 'gender': 'm'}),
 igraph.Vertex(<igraph.Graph object at 0x7bb25a9c6950>, 2, {'name': 'Claire', 'age': 18, 'gender': 'f'}),
 igraph.Vertex(<igraph.Graph object at 0x7bb25a9c6950>, 3, {'name': 'Dennis', 'age': 47, 'gender': 'm'}),
 igraph.Vertex(<igraph.Graph object at 0x7bb25a9c6950>, 4, {'name': 'Esther', 'age': 22, 'gender': 'f'}),
 igraph.Vertex(<igraph.Graph object at 0x7bb25a9c6950>, 5, {'name': 'Frank', 'age': 23, 'gender': 'm'}),
 igraph.Vertex(<igraph.Graph object at 0x7bb25a9c6950>, 6, {'name': 'George', 'age': 50, 'gender': 'm'})]
> query::  exist (v): or(and(age_lt(v, 25), gender_eq(v, "f")), name_eq(v, "Frank"))
{'v': {igraph.Vertex(<igraph.Graph object at 0x7bb25a9c6950>, 2, {'name': 'Claire', 'age': 18, 'gender': 'f'}),
       igraph.Vertex(<igraph.Graph object at 0x7bb25a9c6950>, 4, {'name': 'Esther', 'age': 22, 'gender': 'f'}),
       igraph.Vertex(<igraph.Graph object at 0x7bb25a9c6950>, 5, {'name': 'Frank', 'age': 23, 'gender': 'm'})}}
>>> 
python logicpy/parser.py <<< 'exist (v, e): _between(e, name_eq(a, "Alice"), name_eq(b, "Bob"))'
Vertices [igraph.Vertex(<igraph.Graph object at 0x7cee433fee50>, 0, {'name': 'Alice', 'age': 25, 'gender': 'f'}),
 igraph.Vertex(<igraph.Graph object at 0x7cee433fee50>, 1, {'name': 'Bob', 'age': 31, 'gender': 'm'}),
 igraph.Vertex(<igraph.Graph object at 0x7cee433fee50>, 2, {'name': 'Claire', 'age': 18, 'gender': 'f'}),
 igraph.Vertex(<igraph.Graph object at 0x7cee433fee50>, 3, {'name': 'Dennis', 'age': 47, 'gender': 'm'}),
 igraph.Vertex(<igraph.Graph object at 0x7cee433fee50>, 4, {'name': 'Esther', 'age': 22, 'gender': 'f'}),
 igraph.Vertex(<igraph.Graph object at 0x7cee433fee50>, 5, {'name': 'Frank', 'age': 23, 'gender': 'm'}),
 igraph.Vertex(<igraph.Graph object at 0x7cee433fee50>, 6, {'name': 'George', 'age': 50, 'gender': 'm'})]
> query::  exist (v, e): _between(e, name_eq(a, "Alice"), name_eq(b, "Bob"))
{'a': {igraph.Vertex(<igraph.Graph object at 0x7cee433fee50>, 0, {'name': 'Alice', 'age': 25, 'gender': 'f'})},
 'b': {igraph.Vertex(<igraph.Graph object at 0x7cee433fee50>, 1, {'name': 'Bob', 'age': 31, 'gender': 'm'})},
 'e': {igraph.Edge(<igraph.Graph object at 0x7cee433fee50>, 0, {'is_formal': False})}}
(logicpy-py3.12) ➜  logicpy git:(master) ✗ gs

To install and run the example above: poetry install && poetry shell

  • exists and forall are ignored for now

About

Simple logic to igraph toy language

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

0