OverviewFilesCommitsIssuesDocsReleasesPeers

opencog-atomspace / tests / atoms / core / condlink.scm

107 lines · scm ref:
;
; condlink.scm
;
(use-modules (opencog))

(define single
	; In this flattened CondLink every item in even places is a condition
	; for the next expression.
	(CondLink
	 ; If this evaluates to true then the next expression will execute.
	 (GreaterThanLink
		(PlusLink
		 (NumberNode 2)
		 (NumberNode 2))
		(TimesLink
		 (NumberNode 3)
		 (NumberNode 2)))
	 ; Expression for the above condition.
	 (PlusLink (Number 3)(Number 2))
	 ; This is the second condition
	 (FalseLink )
	 ; Expression for the second condition.
	 (PlusLink (Number 1)(Number 2))
	 ; If all the above conditions evaluate to false, then this is the default
	 ; expression to be executed.
	 (PlusLink (Number 1)(Number -2)))
)

(define nondefault
	; In this flattened CondLink every item in even places is a condition
	; for the next expression.
	(CondLink
   ; If this evaluates to true then the next expression will execute.
		(GreaterThanLink
		 (PlusLink
			(NumberNode 2)
			(NumberNode 2))
		 (TimesLink
			(NumberNode 1)
			(NumberNode 2)))
		(PlusLink (Number 3)(Number 2))
		(FalseLink )
		(PlusLink (Number 1)(Number 2)))
)

(define listwrapped
 (CondLink
	(ListLink
	 (GreaterThanLink
		(NumberNode 3)
		(NumberNode 4))
	 (NumberNode 0))
	(ListLink
	 (GreaterThanLink
		(NumberNode 4)
		(NumberNode 3))
	 (NumberNode 1))
	(ListLink
	 (TrueLink )
	 (NumberNode 2)))
)

(define (grounded_cond1) (BoolValue #f))

(define (grounded_cond2) (BoolValue #t))

(define grounded-cond
 (CondLink
	(Evaluation
		(GroundedPredicate "scm:grounded_cond1")
		(List ))
	(NumberNode 1)

	(Evaluation
		(GroundedPredicate "scm:grounded_cond2")
		(List ))
	(NumberNode 2)))

; ---------------------------------
; AS-MOSES uses PutLink to simplify knobby trees

(define sub-expr
   (AndLink
      (PredicateNode "$a")
      (CondLink
         (EqualLink (Variable "$knob-2") (NumberNode 1))
         (PredicateNode "$b")
         (NotLink (PredicateNode "$b")))))

(DefineLink
   (DefinedSchema "rep")
   (LambdaLink
      (VariableList
         (Variable "$knob-1")
         (Variable "$knob-2"))
      (CondLink
         (EqualLink (Variable "$knob-1") (NumberNode 1))
         sub-expr
         (NotLink sub-expr))))

(define put-00 (Put (DefinedSchema "rep") (List (Number 0) (Number 0))))
(define put-01 (Put (DefinedSchema "rep") (List (Number 0) (Number 1))))
(define put-10 (Put (DefinedSchema "rep") (List (Number 1) (Number 0))))
(define put-11 (Put (DefinedSchema "rep") (List (Number 1) (Number 1))))

*unspecified*