notoria
de8a017e80
Enhanced command line #2
2020-05-01 18:52:41 +02:00
Markus Triska
ca5a5b4392
correct overeager CLP(ℤ) goal expansion
...
For instance, consider:
t(X) :- X #= 1.
We *cannot* expand this to:
?- listing(t/1).
t(A) :-
( integer(A) ->
A=:=A
; ( var(A) ->
true
; true,
clpz:clpz_equal(A,A)
)
).
Also, a new binding *must not* be dragged outside of disjunctions,
since the code may look for example like this:
i(X) :-
( X #= 3
; X #= 4
).
This commit fixes such issues, and still rewrites CLP(ℤ) expressions
as far as possible already at compilation time.
For example:
n(X) :- X #= 1+3.
This is now compiled to (note that 1+3 is evaluated to 4):
?- listing(n/1).
n(A) :-
( integer(A) ->
A=:=4
; ( var(A) ->
A=4
; B=4,
clpz:clpz_equal(A,B)
)
).
Ideally, it should be compiled to:
n(4).
2020-05-01 18:29:00 +02:00
Mark Thom
1b7c226779
correct failing character match in compare_pstr_to_string ( #397 )
2020-05-01 10:29:10 -06:00
notoria
6ae7ae0210
Enhanced version
2020-05-01 16:46:31 +02:00
notoria
b911d2fda4
Enhanced command line
2020-05-01 16:19:06 +02:00
Mark Thom
847a92f580
map single character atoms down to characters in constant_index
2020-05-01 01:34:09 -06:00
Mark Thom
a346493de1
Merge branch 'master' of https://github.com/mthom/rusty-wam
2020-04-30 18:20:51 -06:00
Mark Thom
efd5d6efab
use slightly better names in indexing functions
2020-04-30 18:20:42 -06:00
Mark Thom
b6df5a4b7f
only add expanded goals to dynamic clause code ( #416 )
2020-04-30 17:53:26 -06:00
Mark Thom
34ae56e319
correct queue_len += queue_len; to queue_len += queue.len(); ( #416 )
2020-04-30 15:31:01 -06:00
Markus Triska
1dbadbfc35
enable goal expansion for CLP(ℤ) goals
...
Example:
integer_successor(I0, I) :- I #= I0 + 1.
Yielding:
?- listing(integer_successor/2).
integer_successor(A,B) :-
( integer(B) ->
( integer(A) ->
B=:=A+1
; C is B,
clpz:clpz_equal(C,A+1)
)
; ( integer(A) ->
( var(B) ->
B is A+1
; C is A+1,
clpz:clpz_equal(B,C)
)
; clpz:clpz_equal(B,A+1)
)
).
Thus, fast low-level arithmetic is used whenever possible.
2020-04-30 23:09:15 +02:00
Mark Thom
d3f1cd7411
index atoms with operators against the same atom with no operator ( #387 )
2020-04-30 15:09:05 -06:00
Markus Triska
a39f4b4487
correct verify_attributes/3 for variables that have no CLP(ℤ) attribute attached ( #373 )
...
Example:
?- freeze(B, queen_value_truth(C,N,B)), Q #= N #<==> B.
clpz:(Q#=N#<==>B), clpz:(B in 0..1), freeze:freeze(B,queen_value_truth(C,N,B))
; false.
2020-04-30 18:10:09 +02:00
Mark Thom
f7b401b9b6
fix user:goal_expansion
2020-04-30 09:28:11 -06:00
Mark Thom
e0e52a3090
fix 'drain lower bound was too large', store user-level expansions to modules ( #416 )
2020-04-30 00:01:00 -06:00
Mark Thom
ff5b870a9f
Merge pull request #417 from notoria/mediants
...
Implemented predicate mediants/2 with Stern-Brocot tree
2020-04-29 18:33:35 -03:00
notoria
a371580201
Add rational_numerator_denominator/3, number_to_rational/2 and renamed stern_brocot/3 to number_to_rational/3
2020-04-29 23:30:14 +02:00
Mark Thom
2df4083602
use select to filter variable lists when printing equations of two variables
2020-04-29 11:05:10 -03:00
Mark Thom
2495fb796d
select variable names in write_eq based on whether RHS is a variable ( #326 )
2020-04-29 10:56:17 -03:00
notoria
f7b49740c1
Removed predicate mediants/2 and added stern_brocot/3
2020-04-29 14:18:20 +02:00
Mark Thom
7e765fe726
correct answer substitution order, equating variables to themselves ( #326 )
2020-04-29 01:45:42 -06:00
notoria
1d339f74d1
Implemented predicate mediants/2 with Stern-Brocot tree
2020-04-29 02:44:13 +02:00
Mark Thom
a3bb288f01
check that lower bound on term expansion drain is below the len of the term expansion vector, queue ( #416 )
2020-04-28 19:22:20 -06:00
Mark Thom
0e1226573a
print rational numbers using the rdiv operator when defined ( #413 )
2020-04-28 18:03:04 -06:00
Mark Thom
8151b65d12
Merge branch 'master' of https://github.com/mthom/rusty-wam
2020-04-28 17:20:25 -06:00
Mark Thom
eefd36b50d
do length check in PartialString::range_from ( #412 )
2020-04-28 17:20:14 -06:00
Markus Triska
4ea0dee90a
use new nth0/3 from library(lists)
2020-04-28 17:59:49 +02:00
Markus Triska
e61116d35a
use singleton variable, correct a mistake in maplist/8
2020-04-28 17:59:49 +02:00
Markus Triska
f7256c75d5
ADDED: nth0/3, relating indices to list elements
2020-04-28 17:59:49 +02:00
Markus Triska
2696fd1291
small typographic corrections
2020-04-28 17:59:49 +02:00
Markus Triska
b139620fba
use new predicates from library(error) to throw type and domain errors
2020-04-28 17:59:49 +02:00
Mark Thom
97115a9c1c
Merge branch 'master' of https://github.com/mthom/rusty-wam
2020-04-28 01:41:11 -06:00
Mark Thom
36134c61b2
erase unnecessary stub from block of FileToChars
2020-04-28 01:40:59 -06:00
Mark Thom
77cf0fd87b
don't append lists of attributes when binding attributed variables ( #353 )
2020-04-28 01:40:11 -06:00
Mark Thom
ab77a1cbc0
modify domain.pl example ( #347 )
2020-04-28 01:39:34 -06:00
Markus Triska
8e1ba58551
use new predicates from library(error)
2020-04-27 18:44:59 +02:00
Markus Triska
2b1692a860
ADDED: library(error): instantiation_error/1, domain_error/3, type_error/3
...
These predicates simplify throwing ISO errors.
2020-04-27 18:44:59 +02:00
Markus Triska
7a2981e21c
include usage advice about probabilistic predicates
2020-04-27 18:44:59 +02:00
Mark Thom
f8717359d7
Merge pull request #406 from notoria/random
...
Created the library random and updated library clpb
2020-04-27 09:14:01 -03:00
Mark Thom
fe395e3a8c
publish bimetatrans_ruleml_tests, move both files to own directory
2020-04-26 20:32:16 -06:00
Mark Thom
eb9fe851af
Merge branch 'master' of https://github.com/mthom/rusty-wam
2020-04-26 20:15:27 -06:00
notoria
d61851ad02
Added predicate random_integer and updated clpb
2020-04-27 01:52:19 +02:00
notoria
de7a408903
Created the library random and moved some predicates from iso_ext
2020-04-26 23:37:22 +02:00
notoria
9b1272da51
Small patch for library pio
2020-04-26 14:54:20 +02:00
Mark Thom
ae2402f4a7
Merge pull request #399 from notoria/debug
...
Implemented the Debug trait for all data structures
2020-04-25 23:35:27 -03:00
notoria
c98e869564
Implemented the Debug trait for all data structures
2020-04-26 02:20:24 +02:00
Mark Thom
2d7fcbf23d
use proper module name in bimetatrans_ruleml
2020-04-25 12:55:36 -06:00
Markus Triska
40619c8184
ENHANCED: Throw domain errors in char_type/2 for wrong types
...
This is especially important because a few of our names diverge from
ctype(3), and we better inform programmers when the type they are
using is not available at all.
2020-04-25 20:12:54 +02:00
Markus Triska
b0a5df2838
use an anonymous variable
2020-04-25 19:59:46 +02:00
Mark Thom
ae9232a2cb
Merge pull request #396 from notoria/phrase_from_file
...
Implemented phrase_from_file/2 and /2
2020-04-25 14:17:24 -03:00