
My allma matter.
It’s long been the running gag of the Superman universe – that the world’s populace and his closest friends are unable to comprehend that Superman and Clark Kent are one in the same, only one of them happens to be wearing glasses. While it is somewhat conceivable that Supes’ fans and Clark’s acquaintances are too knuckle-headed to see the truth (particularly in the early days of his existence, as we suspect that modern day Superman will have some major problems when it comes to social media, smart phones, and citizen reportership), it’s always been dunderheaded that Superman’s perennial love interest, Lois Lane, is consistently in the dark as to who is who. The main issue with the lovely Lois not seeing the obvious is that she is not only a highly intelligent woman, she is a woman who investigates things for a living. Rooting out truths and seeing beyond the status quo is not only what Lois does, but it’s who she is. Open your eyes, Lois!This logic leads to an inevitable conclusion:
This is all a longwinded way of saying that we’re used to Lois Lane not knowing who Superman really is, and it’s a tremendous relief that this particular element of the story (no matter how traditional and accepted it may be) is excised almost immediately in Zack Snyder’s Man of Steel.The problem with this line of reasoning is that it never goes far enough.
A predicate constraint can be used to evaluate an expression testing for equality:(defrule rule-387 (data (value 387)) =>)
A test conditional element can be used to evaluate an expression testing for equality:(defrule rule-387 (data (value ?x&:(eq ?x 387))) =>)
An empirical analysis can be performed to determine which template is most efficient as the number of rules and distinct constants increase. A common set of constructs will be used with each group of rules to trigger pattern matching as a single fact is repeatedly modified:(defrule rule-387 (data (value ?x)) (test (eq ?x 387)) =>)
Using CLIPS 6.24 to run the common rules in conjunction with groups of 1, 100, 400, 700, and 1000 rules using each of the three templates produces the following results.(deftemplate data (slot index) (slot value)) (deffacts start (data (index 1000000) (value 100000))) (defrule loop (declare (salience 1)) ?f <- (data (index ?i&~0)) => (modify ?f (index (- ?i 1)) (value (- ?i 1))))