dwolter_SparQ/Calculi/qtc-b12.lisp
;;;
;;; QTC-B12: Qualitative Trajectory Calculus Basic 1D Level 2 with 17 base relations
;;;

(def-calculus "Qualitative Trajectory Calculus Basic 1D Level 2 (QTC-B12)"
  :arity :binary
  ;;:qualifier (external-lib "libqtc.dylib" "qtc_b12_qualify")
  :basis-entity :dipole ;; 1D point resp. 1D interval + additional velocity
  :identity-relation OOO
  :converse-operation ( ( --- --+ )
			( -+- +-+ )
			( O-- -O+ )
			( O+- +O+ )
			( +-- -++ )
			( ++- +++ )
			( --O --O )
			( -+O +-O )
			( OOO OOO )
			( +-O -+O )
			( ++O ++O )
			( --+ --- ) 
			( -O+ O-- )
			( -++ +-- ) 
			( +-+ -+- )
			( +O+ O+- ) 
			( +++ ++- )
		      )
  
  ;;:base-relations (--- -+- 0-- 0+- +-- ++- --0 -+0 000 +-0 ++0 --+ -0+ -++ +-+ +0+ +++)
  ;; -0- 00- +0- -00 0-0 0+0 +00 0-+ 00+ 0++ are physically not possible
  :base-relations (---     -+- O--     O+- +--     ++-
		   --O     -+O     OOO     +-O     ++O
		   --+ -O+ -++             +-+ +O+ +++)
  ;; -O- OO- +O- -OO O-O O+O +OO O-+ OO+ O++ are physically not possible

  :composition-operation ( ;; 1st row
			  (--- --- ( -+- +-- ))
			  (--- -+- ( --- ++- )) 
			  (--- O-- ( )) 
			  (--- O+- ( )) 
			  (--- +-- ( --- )) 
			  (--- ++- ( -+- )) 
			  (--- --O ( -+- +-- ))
			  (--- -+O ( --- ++- )) 
			  (--- OOO ( )) 
			  (--- +-O ( --- )) 
			  (--- ++O ( -+- )) 
			  (--- --+ ( -+- +-- -+O +-O -++ +-+ ))
			  (--- -O+ (  -O+ +O+ )) 
			  (--- -++ ( --- ++- --O ++O --+ +++ )) 
			  (--- +-+ ( --- --O --+ )) 
			  (--- +O+ ( -O+ )) 
			  (--- +++ ( -+- -+O -++ )) 

			  (-+- --- ( --- )) 
			  (-+- -+- ( -+- )) 
			  (-+- O-- ( )) 
			  (-+- O+- ( )) 
			  (-+- +-- ( -+- +-- )) 
			  (-+- ++- ( --- ++- )) 
			  (-+- --O ( --- )) 
			  (-+- -+O ( -+- )) 
			  (-+- OOO ( )) 
			  (-+- +-O ( -+- +-- )) 
			  (-+- ++O ( --- ++- )) 
			  (-+- --+ ( --- --O --+ )) 
			  (-+- -O+ ( -O+ )) 
			  (-+- -++ ( -+- -+O -++ )) 
			  (-+- +-+ ( -+- +-- -+O +-O -++ +-+ )) 
			  (-+- +O+ (  -O+ +O+ )) 
			  (-+- +++ ( --- ++- --O ++O --+ +++ )) 

			  (O-- --- ( O-- O+- )) 
			  (O-- -+- ( O-- O+- )) 
			  (O-- O-- ( )) 
			  (O-- O+- ( )) 
			  (O-- +-- ( O-- )) 
			  (O-- ++- ( O+- )) 
			  (O-- --O ( O-- O+- )) 
			  (O-- -+O ( O-- O+- )) 
			  (O-- OOO ( )) 
			  (O-- +-O ( O-- )) 
			  (O-- ++O ( O+- )) 
			  (O-- --+ ( O-- O+- )) 
			  (O-- -O+ ( OOO )) 
			  (O-- -++ ( O-- O+-     )) 
			  (O-- +-+ ( O-- )) 
			  (O-- +O+ ( OOO )) 
			  (O-- +++ ( O+-  )) 

			  (O+- --- ( O-- )) 
			  (O+- -+- ( O+- )) 
			  (O+- O-- ( )) 
			  (O+- O+- ( )) 
			  (O+- +-- ( O-- O+- )) 
			  (O+- ++- ( O-- O+-)) 
			  (O+- --O ( O-- )) 
			  (O+- -+O ( O+- )) 
			  (O+- OOO ( )) 
			  (O+- +-O ( O-- O+- )) 
			  (O+- ++O ( O-- O+-)) 
			  (O+- --+ ( O-- )) 
			  (O+- -O+ ( OOO )) 
			  (O+- -++ ( O+- )) 
			  (O+- +-+ ( O-- O+- )) 
			  (O+- +O+ ( OOO  )) 
			  (O+- +++ ( O-- O+- )) 

			  (+-- --- ( --- ++- )) 
			  (+-- -+- ( -+- +-- )) 
			  (+-- O-- ( )) 
			  (+-- O+- ( )) 
			  (+-- +-- ( +-- )) 
			  (+-- ++- ( ++- )) 
			  (+-- --O ( --- ++- )) 
			  (+-- -+O ( -+- +-- )) 
			  (+-- OOO ( )) 
			  (+-- +-O ( +-- )) 
			  (+-- ++O ( ++- )) 
			  (+-- --+ ( --- ++- --O ++O --+ +++ )) 
			  (+-- -O+ (  -O+ +O+ )) 
			  (+-- -++ ( -+- +-- -+O +-O -++ +-+ )) 
			  (+-- +-+ ( +-- +-O +-+ )) 
			  (+-- +O+ (  +O+ )) 
			  (+-- +++ ( ++- ++O +++ )) 

			  (++- --- ( +-- )) 
			  (++- -+- ( ++- )) 
			  (++- O-- ( )) 
			  (++- O+- ( )) 
			  (++- +-- ( --- ++- )) 
			  (++- ++- ( -+- +-- )) 
			  (++- --O ( +-- )) 
			  (++- -+O ( ++- )) 
			  (++- OOO ( )) 
			  (++- +-O ( --- ++- )) 
			  (++- ++O ( -+- +-- )) 
			  (++- --+ ( +-- +-O +-+ )) 
			  (++- -O+ (  +O+ )) 
			  (++- -++ ( ++- ++O +++ )) 
			  (++- +-+ ( --- ++- --O ++O --+ +++ )) 
			  (++- +O+ (  -O+ +O+ )) 
			  (++- +++ ( -+- +-- -+O +-O -++ +-+ )) 


			  ;; 2nd row
			  (--O --- ( -+- +-- ))
			  (--O -+- ( --- ++- )) 
			  (--O O-- ( )) 
			  (--O O+- ( )) 
			  (--O +-- ( --- )) 
			  (--O ++- ( -+- )) 
			  (--O --O ( -+O +-O ))
			  (--O -+O ( --O ++O )) 
			  (--O OOO ( )) 
			  (--O +-O ( --O )) 
			  (--O ++O ( -+O )) 
			  (--O --+ ( -++ +-+ ))
			  (--O -O+ ( -O+ +O+ )) 
			  (--O -++ ( --+ +++ )) 
			  (--O +-+ ( --+ )) 
			  (--O +O+ ( -O+ )) 
			  (--O +++ ( -++ )) 

			  (-+O --- ( --- )) 
			  (-+O -+- ( -+- )) 
			  (-+O O-- ( )) 
			  (-+O O+- ( )) 
			  (-+O +-- ( -+- +-- )) 
			  (-+O ++- ( --- ++- )) 
			  (-+O --O ( --O )) 
			  (-+O -+O ( -+O )) 
			  (-+O OOO ( )) 
			  (-+O +-O ( -+O +-O )) 
			  (-+O ++O ( --O ++O )) 
			  (-+O --+ ( --+ )) 
			  (-+O -O+ ( -O+ )) 
			  (-+O -++ ( -++ )) 
			  (-+O +-+ ( -++ +-+ )) 
			  (-+O +O+ ( -O+ +O+ )) 
			  (-+O +++ ( --+ +++ )) 

			  (OOO --- ( )) 
			  (OOO -+- ( )) 
			  (OOO O-- ( O-- O+- )) 
			  (OOO O+- ( O-- O+- )) 
			  (OOO +-- ( )) 
			  (OOO ++- ( )) 
			  (OOO --O ( )) 
			  (OOO -+O ( )) 
			  (OOO OOO ( OOO )) 
			  (OOO +-O ( )) 
			  (OOO ++O ( )) 
			  (OOO --+ ( )) 
			  (OOO -O+ ( )) 
			  (OOO -++ ( )) 
			  (OOO +-+ ( )) 
			  (OOO +O+ ( )) 
			  (OOO +++ ( )) 

			  (+-O --- ( --- ++- )) 
			  (+-O -+- ( -+- +-- )) 
			  (+-O O-- ( )) 
			  (+-O O+- ( )) 
			  (+-O +-- ( +-- )) 
			  (+-O ++- ( ++- )) 
			  (+-O --O ( --O ++O )) 
			  (+-O -+O ( -+O +-O )) 
			  (+-O OOO ( )) 
			  (+-O +-O ( +-O )) 
			  (+-O ++O ( ++O )) 
			  (+-O --+ ( --+ +++ )) 
			  (+-O -O+ ( -O+ +O+ )) 
			  (+-O -++ ( -++ +-+ )) 
			  (+-O +-+ ( +-+ )) 
			  (+-O +O+ ( +O+ )) 
			  (+-O +++ ( +++ )) 


			  (++O --- ( +-- )) 
			  (++O -+- ( ++- )) 
			  (++O O-- ( )) 
			  (++O O+- ( )) 
			  (++O +-- ( --- ++- )) 
			  (++O ++- ( -+- +-- )) 
			  (++O --O ( +-O )) 
			  (++O -+O ( ++O )) 
			  (++O OOO ( )) 
			  (++O +-O ( --O ++O )) 
			  (++O ++O ( -+O +-O )) 
			  (++O --+ ( +-+ )) 
			  (++O -O+ ( +O+ )) 
			  (++O -++ ( +++ )) 
			  (++O +-+ ( --+ +++ )) 
			  (++O +O+ ( -O+ +O+ )) 
			  (++O +++ ( -++ +-+ )) 

			  ;; 3rd row
			  (--+ --- ( -+- +-- -+O +-O -++ +-+ ))
			  (--+ -+- ( --- ++- --O ++O --+ +++ )) 
			  (--+ O-- ( )) 
			  (--+ O+- ( )) 
			  (--+ +-- ( --- --O --+ )) 
			  (--+ ++- ( -+- -+O -++ )) 
			  (--+ --O ( -++ +-+ ))
			  (--+ -+O ( --+ +++ )) 
			  (--+ OOO ( )) 
			  (--+ +-O ( --+ )) 
			  (--+ ++O ( -++ )) 
			  (--+ --+ ( -++ +-+ ))
			  (--+ -O+ ( -O+ +O+ )) 
			  (--+ -++ ( --+ +++ )) 
			  (--+ +-+ ( --+ )) 
			  (--+ +O+ ( -O+ )) 
			  (--+ +++ ( -++ )) 

			  (-O+ --- ( )) 
			  (-O+ -+- ( )) 
			  (-O+ O-- ( --- -+- +-- --O -+O +-O --+ -++ +-+ )) 
			  (-O+ O+- ( --- -+- ++- --O -+O ++O --+ -++ +++ )) 
			  (-O+ +-- ( )) 
			  (-O+ ++- ( )) 
			  (-O+ --O ( )) 
			  (-O+ -+O ( )) 
			  (-O+ OOO ( -O+ +O+ )) 
			  (-O+ +-O ( )) 
			  (-O+ ++O ( )) 
			  (-O+ --+ ( )) 
			  (-O+ -O+ ( )) 
			  (-O+ -++ ( )) 
			  (-O+ +-+ ( )) 
			  (-O+ +O+ ( )) 
			  (-O+ +++ ( )) 

			  (-++ --- ( --- --O --+ )) 
			  (-++ -+- ( -+- -+O -++ )) 
			  (-++ O-- ( )) 
			  (-++ O+- ( )) 
			  (-++ +-- ( -+- +-- -+O +-O -++ +-+ )) 
			  (-++ ++- ( --- ++- --O ++O --+ +++ )) 
			  (-++ --O ( --+ )) 
			  (-++ -+O ( -++ )) 
			  (-++ OOO ( )) 
			  (-++ +-O ( -++ +-+ )) 
			  (-++ ++O ( --+ +++ )) 
			  (-++ --+ ( --+ )) 
			  (-++ -O+ ( -O+ )) 
			  (-++ -++ ( -++ )) 
			  (-++ +-+ ( -++ +-+ )) 
			  (-++ +O+ ( -O+ +O+ )) 
			  (-++ +++ ( --+ +++ )) 

			  (+-+ --- ( --- ++- --O ++O --+ +++ )) 
			  (+-+ -+- ( -+- +-- -+O +-O -++ +-+ )) 
			  (+-+ O-- ( )) 
			  (+-+ O+- ( )) 
			  (+-+ +-- ( +-- +-O +-+ )) 
			  (+-+ ++- ( ++- ++O +++ )) 
			  (+-+ --O ( --+ +++ )) 
			  (+-+ -+O ( -++ +-+ )) 
			  (+-+ OOO ( )) 
			  (+-+ +-O ( +-+ )) 
			  (+-+ ++O ( +++ )) 
			  (+-+ --+ ( --+ +++ )) 
			  (+-+ -O+ ( -O+ +O+ )) 
			  (+-+ -++ ( -++ +-+ )) 
			  (+-+ +-+ ( +-+ )) 
			  (+-+ +O+ ( +O+ )) 
			  (+-+ +++ ( +++ )) 

			  (+O+ --- ( )) 
			  (+O+ -+- ( )) 
			  (+O+ O-- ( --- +-- ++- --O +-O ++O --+ +-+ +++ )) 
			  (+O+ O+- ( -+- +-- ++- -+O +-O ++O -++ +-+ +++ )) 
			  (+O+ +-- ( )) 
			  (+O+ ++- ( )) 
			  (+O+ --O ( )) 
			  (+O+ -+O ( )) 
			  (+O+ OOO ( +O+ -O+ )) 
			  (+O+ +-O ( )) 
			  (+O+ ++O ( )) 
			  (+O+ --+ ( )) 
			  (+O+ -O+ ( )) 
			  (+O+ -++ ( )) 
			  (+O+ +-+ ( )) 
			  (+O+ +O+ ( )) 
			  (+O+ +++ ( )) 

			  (+++ --- ( +-- +-O +-+ )) 
			  (+++ -+- ( ++- ++O +++ )) 
			  (+++ O-- ( )) 
			  (+++ O+- ( )) 
			  (+++ +-- ( --- ++- --O ++O --+ +++ )) 
			  (+++ ++- ( -+- +-- -+O +-O -++ +-+ )) 
			  (+++ --O ( +-+ )) 
			  (+++ -+O ( +++ )) 
			  (+++ OOO ( )) 
			  (+++ +-O ( --+ +++ )) 
			  (+++ ++O ( -++ +-+ )) 
			  (+++ --+ ( +-+ )) 
			  (+++ -O+ ( +O+ )) 
			  (+++ -++ ( +++ )) 
			  (+++ +-+ ( --+ +++ )) 
			  (+++ +O+ ( -O+ +O+ )) 
			  (+++ +++ ( -++ +-+ )) 
			  
			  )
  )


