OverviewFilesCommitsIssuesDocsReleasesPeers

opencog-learn / tests / merge / balance-data.scm

332 lines · scm ref:
;
; balance-data.scm
; Populate the AtomSpace with assorted test data (for some of the 
; detailed balance tests)

(use-modules (opencog) (opencog lg))


(define tvkeystr "*-TruthValueKey-*")

(define (cog-count ATOM)
	(cog-value-ref (cog-value ATOM (Predicate tvkeystr)) 2))

; ---------------------------------------------------------------
; Define sections on two words, that should be mergeable.

(define cnt-a-gh 61)
(define cnt-b-gh 38)
(define cnt-c-aaa 44)

(define (setup-a-b-sections)
	(define tvkey (PredicateNode tvkeystr))

	(cog-set-value!
		(Section
			(Word "a")
			(ConnectorSeq
				(Connector (Word "g") (ConnectorDir "-"))
				(Connector (Word "h") (ConnectorDir "+"))))
		tvkey
		(FloatValue 1 0 cnt-a-gh))

	(cog-set-value!
		(Section
			(Word "b")
			(ConnectorSeq
				(Connector (Word "g") (ConnectorDir "-"))
				(Connector (Word "h") (ConnectorDir "+"))))
		tvkey
		(FloatValue 1 0 cnt-b-gh))

	(cog-set-value!
		(Section
			(Word "c")
			(ConnectorSeq
				(Connector (Word "k") (ConnectorDir "-"))
				(Connector (Word "a") (ConnectorDir "+"))
				(Connector (Word "a") (ConnectorDir "+"))
				(Connector (Word "a") (ConnectorDir "+"))
				(Connector (Word "m") (ConnectorDir "+"))))
		tvkey
		(FloatValue 1 0 cnt-c-aaa))

	*unspecified*
)

; Expected results from the above.
(define sec-ab-gh #f)
(define sec-c-aaa #f)

(define xes-k-c-vaaam #f)
(define xes-a-c-kvaam #f)
(define xes-a-c-kavam #f)
(define xes-a-c-kaavm #f)
(define xes-m-c-kaaav #f)

(define (expected-a-b-sections WC-AB)
	(set! sec-ab-gh
	(Section
		WC-AB
		(ConnectorSeq
			(Connector (Word "g") (ConnectorDir "-"))
			(Connector (Word "h") (ConnectorDir "+")))))

	(set! sec-c-aaa
	(Section
		(Word "c")
		(ConnectorSeq
			(Connector (Word "k") (ConnectorDir "-"))
			(Connector WC-AB (ConnectorDir "+"))
			(Connector WC-AB (ConnectorDir "+"))
			(Connector WC-AB (ConnectorDir "+"))
			(Connector (Word "m") (ConnectorDir "+")))))

	(set! xes-k-c-vaaam
	(CrossSection
		(Word "k")
		(Shape
			(Word "c")
			(Connector (VariableNode "$connector-word") (ConnectorDir "-"))
			(Connector WC-AB (ConnectorDir "+"))
			(Connector WC-AB (ConnectorDir "+"))
			(Connector WC-AB (ConnectorDir "+"))
			(Connector (Word "m") (ConnectorDir "+")))))

	(set! xes-a-c-kvaam
	(CrossSection
		WC-AB
		(Shape
			(Word "c")
			(Connector (Word "k") (ConnectorDir "-"))
			(Connector (VariableNode "$connector-word") (ConnectorDir "+"))
			(Connector WC-AB (ConnectorDir "+"))
			(Connector WC-AB (ConnectorDir "+"))
			(Connector (Word "m") (ConnectorDir "+")))))

	(set! xes-a-c-kavam
	(CrossSection
		WC-AB
		(Shape
			(Word "c")
			(Connector (Word "k") (ConnectorDir "-"))
			(Connector WC-AB (ConnectorDir "+"))
			(Connector (VariableNode "$connector-word") (ConnectorDir "+"))
			(Connector WC-AB (ConnectorDir "+"))
			(Connector (Word "m") (ConnectorDir "+")))))

	(set! xes-a-c-kaavm
	(CrossSection
		WC-AB
		(Shape
			(Word "c")
			(Connector (Word "k") (ConnectorDir "-"))
			(Connector WC-AB (ConnectorDir "+"))
			(Connector WC-AB (ConnectorDir "+"))
			(Connector (VariableNode "$connector-word") (ConnectorDir "+"))
			(Connector (Word "m") (ConnectorDir "+")))))

	(set! xes-m-c-kaaav
	(CrossSection
		(Word "m")
		(Shape
			(Word "c")
			(Connector (Word "k") (ConnectorDir "-"))
			(Connector WC-AB (ConnectorDir "+"))
			(Connector WC-AB (ConnectorDir "+"))
			(Connector WC-AB (ConnectorDir "+"))
			(Connector (VariableNode "$connector-word") (ConnectorDir "+")))))
)

; ---------------------------------------------------------------
; ---------------------------------------------------------------
; ---------------------------------------------------------------
; Almost same as above, except that the merge word appears
; simultaneously in both seeds and connectors.

(define cnt-a-aaa 43)

(define (setup-aaa-sections)
	(define tvkey (PredicateNode tvkeystr))
	(cog-set-value!
		(Section
			(Word "a")
			(ConnectorSeq
				(Connector (Word "g") (ConnectorDir "-"))
				(Connector (Word "h") (ConnectorDir "+"))))
		tvkey
		(FloatValue 1 0 cnt-a-gh))

	(cog-set-value!
		(Section
			(Word "b")
			(ConnectorSeq
				(Connector (Word "g") (ConnectorDir "-"))
				(Connector (Word "h") (ConnectorDir "+"))))
		tvkey
		(FloatValue 1 0 cnt-b-gh))

	(cog-set-value!
		(Section
			(Word "a")
			(ConnectorSeq
				(Connector (Word "k") (ConnectorDir "-"))
				(Connector (Word "a") (ConnectorDir "+"))
				(Connector (Word "a") (ConnectorDir "+"))
				(Connector (Word "a") (ConnectorDir "+"))
				(Connector (Word "m") (ConnectorDir "+"))))
		tvkey
		(FloatValue 1 0 cnt-a-aaa))

	*unspecified*
)

; Expected results from the above.
; (define sec-ab-gh #f)
(define sec-a-aaa #f)

(define xes-k-a-vaaam #f)
(define xes-a-a-kvaam #f)
(define xes-a-a-kavam #f)
(define xes-a-a-kaavm #f)
(define xes-m-a-kaaav #f)

(define (expected-aaa-sections WC-AB)
	(set! sec-ab-gh
	(Section
		WC-AB
		(ConnectorSeq
			(Connector (Word "g") (ConnectorDir "-"))
			(Connector (Word "h") (ConnectorDir "+")))))

	(set! sec-a-aaa
	(Section
		WC-AB
		(ConnectorSeq
			(Connector (Word "k") (ConnectorDir "-"))
			(Connector WC-AB (ConnectorDir "+"))
			(Connector WC-AB (ConnectorDir "+"))
			(Connector WC-AB (ConnectorDir "+"))
			(Connector (Word "m") (ConnectorDir "+")))))

	(set! xes-k-a-vaaam
	(CrossSection
		(Word "k")
		(Shape
			WC-AB
			(Connector (VariableNode "$connector-word") (ConnectorDir "-"))
			(Connector WC-AB (ConnectorDir "+"))
			(Connector WC-AB (ConnectorDir "+"))
			(Connector WC-AB (ConnectorDir "+"))
			(Connector (Word "m") (ConnectorDir "+")))))

	(set! xes-a-a-kvaam
	(CrossSection
		WC-AB
		(Shape
			WC-AB
			(Connector (Word "k") (ConnectorDir "-"))
			(Connector (VariableNode "$connector-word") (ConnectorDir "+"))
			(Connector WC-AB (ConnectorDir "+"))
			(Connector WC-AB (ConnectorDir "+"))
			(Connector (Word "m") (ConnectorDir "+")))))

	(set! xes-a-a-kavam
	(CrossSection
		WC-AB
		(Shape
			WC-AB
			(Connector (Word "k") (ConnectorDir "-"))
			(Connector WC-AB (ConnectorDir "+"))
			(Connector (VariableNode "$connector-word") (ConnectorDir "+"))
			(Connector WC-AB (ConnectorDir "+"))
			(Connector (Word "m") (ConnectorDir "+")))))

	(set! xes-a-a-kaavm
	(CrossSection
		WC-AB
		(Shape
			WC-AB
			(Connector (Word "k") (ConnectorDir "-"))
			(Connector WC-AB (ConnectorDir "+"))
			(Connector WC-AB (ConnectorDir "+"))
			(Connector (VariableNode "$connector-word") (ConnectorDir "+"))
			(Connector (Word "m") (ConnectorDir "+")))))

	(set! xes-m-a-kaaav
	(CrossSection
		(Word "m")
		(Shape
			WC-AB
			(Connector (Word "k") (ConnectorDir "-"))
			(Connector WC-AB (ConnectorDir "+"))
			(Connector WC-AB (ConnectorDir "+"))
			(Connector WC-AB (ConnectorDir "+"))
			(Connector (VariableNode "$connector-word") (ConnectorDir "+")))))
)

; ---------------------------------------------------------------
; Similar to the first case, but a second donor for the connectors.

(define cnt-c-aab 23)

(define (setup-aab-sections)
	(setup-a-b-sections)

	(define tvkey (PredicateNode tvkeystr))
	(cog-set-value!
		(Section
			(Word "c")
			(ConnectorSeq
				(Connector (Word "k") (ConnectorDir "-"))
				(Connector (Word "a") (ConnectorDir "+"))
				(Connector (Word "a") (ConnectorDir "+"))
				(Connector (Word "b") (ConnectorDir "+"))
				(Connector (Word "m") (ConnectorDir "+"))))
		tvkey
		(FloatValue 1 0 cnt-c-aab))


	*unspecified*
)

; Expected results from the above.
; Exactly the same as the first case.
(define (expected-aab-sections WC-AB)
	(expected-a-b-sections WC-AB)
)

; ---------------------------------------------------------------
; Similar to the first case, but a third donor for the connectors.

(define cnt-c-aba 30)

(define (setup-aba-sections)
	(setup-aab-sections)

	(define tvkey (PredicateNode tvkeystr))
	(cog-set-value!
		(Section
			(Word "c")
			(ConnectorSeq
				(Connector (Word "k") (ConnectorDir "-"))
				(Connector (Word "a") (ConnectorDir "+"))
				(Connector (Word "b") (ConnectorDir "+"))
				(Connector (Word "a") (ConnectorDir "+"))
				(Connector (Word "m") (ConnectorDir "+"))))
		tvkey
		(FloatValue 1 0 cnt-c-aba))

	*unspecified*
)

; Expected results from the above.
; Exactly the same as the first case.
(define (expected-aba-sections WC-AB)
	(expected-aab-sections WC-AB)
)

; ---------------------------------------------------------------
; ---------------------------------------------------------------
; ---------------------------------------------------------------