Joachim Schimpf schrieb:
>> ?- X = 3m^4.
>> >Error: Parenthesis ("(") before operator missing.
>> >X = 3m^4.
>> >       ^
>> >But I guess the dark forces are also strong with
>> >these Prolog systems that are more tolerant.
> Nothing to do with tolerance.  You want 3m^4  to be equivalent
> to 3*(m^4) and you can't have that with Prolog syntax.
Oh, now I see, I was adopting your operator level.
If I use a different operator level, I don't
get an error anymore on my side, but its still
not usable, since m refers to 3 and is not captured
by the (^)/2:
	Jekejeke Prolog, Development Environment 0.9.12
	(c) 1985-2013, XLOG Technologies GmbH, Switzerland
	?- op(100,yf,m).
	Yes
	?- X = 3m.
	X = 3 m
	?- X = 3m^7.
	X = 3 m^7
	?- X = 3m^7, write_canonical(X).
	^(m(3),7)X = 3 m^7
Now I understand why you did use the operator level
300. Oki Doki.
If I try a Prolog system that I dub tolerant,
I get some strange result:
	Welcome to SWI-Prolog (Multi-threaded, 64 bits, Version 7.1.0)
	Copyright (c) 1990-2013 University of Amsterdam, VU Amsterdam
	?- op(300,yf,m).
	true.
	?- X = 3m^4.
	X = 3^4 m.
	?- X = 3m^4, write_canonical(X).
	m(^(3,4))
	X = 3^4 m.
My expectation would be that m is postfix of 3,
in case the prolog system is tolerant. What
is going on here?
Bye