From 7c70cd3ae822364968d96eda728f8252dcf04492 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?R=C3=A9gis=20Blanc?= <regwblanc@gmail.com>
Date: Mon, 7 May 2012 19:37:20 +0200
Subject: [PATCH] evaluate set cardinality in evaluator

---
 src/main/scala/leon/Evaluator.scala | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/src/main/scala/leon/Evaluator.scala b/src/main/scala/leon/Evaluator.scala
index e8409aa31..004d03d61 100644
--- a/src/main/scala/leon/Evaluator.scala
+++ b/src/main/scala/leon/Evaluator.scala
@@ -242,6 +242,14 @@ object Evaluator {
           case (e, f @ FiniteSet(els)) => BooleanLiteral(els.contains(e))
           case (l,r) => throw TypeErrorEx(TypeError(r, SetType(l.getType)))
         }
+        case SetCardinality(s) => {
+          val sr = rec(ctx, s)
+          sr match {
+            case EmptySet(_) => IntLiteral(0)
+            case FiniteSet(els) => IntLiteral(els.size)
+            case _ => throw TypeErrorEx(TypeError(sr, SetType(AnyType)))
+          }
+        }
 
         case f @ FiniteSet(els) => FiniteSet(els.map(rec(ctx,_)).distinct).setType(f.getType)
         case e @ EmptySet(_) => e
-- 
GitLab