I started to learn Ada yesterday but I don't really understand the Dynamic_Predicate'aspect.
when declaring: 
type evenInt is new Integer
 with Dynamic_Predicate => evenInt mod 2 = 0;
Why is it still possible to:
anOddNum : evenInt := 7;
since:
Dynamic_Predicate => evenInt mod 2 = 0 
forbids to declare odd numbers?
                        
You need to compile with assertions enabled (
-gnata)