OC之谓词

//
//  main.m
//  谓词
//
//  Created by New-World on 13-11-6.
//  Copyright (c) 2013年 Gary. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc, const char * argv[])
{

    @autoreleasepool {
        NSMutableArray *array=[NSMutableArray array];
        for (int i=0; i<10; i++) {
            Person *person=[[Person alloc]init];
            if (i<5) {
                person.name=[NSString stringWithFormat:@"jack-%d",i];
            }
            else{
                person.name=[NSString stringWithFormat:@"tom-%d",i];
            }
            NSNumber *a=[person age];
            int s=[a intValue];
            [person setAge:@(i+s)];
            [array addObject:person];
            [person release];
        }
            
            
            
            
        //判断是否满足条件
        //NSArray *inArray=@[@"tom-8",@"jack-3",@"jack-2"];
        //NSPredicate *predicate=[NSPredicate predicateWithFormat:@"age<25"];
        //NSPredicate *predicate=[NSPredicate predicateWithFormat:@"name in %@",inArray];//名字是否在数组inArray中
        //NSPredicate *predicate=[NSPredicate predicateWithFormat:@"name BEGINSWITH 't'|| name BEGINSWITH 'j'"];//是否以‘t’或者'j'开头
        //NSPredicate *predicate=[NSPredicate predicateWithFormat:@"name ENDSWITH '-5'"];//是否以‘-5’结尾
        NSPredicate *predicate=[NSPredicate predicateWithFormat:@"name like '*4'"];//是否以‘4’结尾
        for (Person *p in array) {
            BOOL ret=[predicate evaluateWithObject:p];
            if (ret) {
                NSLog(@"%@",p);
            }
        
        }
        
        //对数组进行过滤
        NSArray *filterArray=[array filteredArrayUsingPredicate:predicate];
        NSLog(@"%@",filterArray);
        
    }
    return 0;
}

### 关于离散数学中谓词逻辑的思维导图 #### 1. **原子公式** 原子公式是由谓词和项组成的最基本单位。它表示某种属性或关系,例如 \( P(x) \) 或者 \( R(x, y) \)[^1]。 #### 2. **自由变元与约束变元** - **自由变元**是指未被量词绑定的变量,在公式中可以取任意值。 - **约束变元**则是指已经被量词(全称量词 \( \forall \) 或存在量词 \( \exists \))作用过的变量[^1]。 #### 3. **换名规则与带入规则** - **换名规则**允许将约束变元替换为另一个不在当前公式中出现的变量名称,而不改变公式的语义意义。 - **带入规则**用于将自由变元替换成具体的常量或其他表达式,前提是该操作不会引起冲突[^1]。 #### 4. **闭式公式的解释** 对于一个给定的一阶逻辑闭式(即不含自由变元的公式),其真假取决于个体域的选择以及如何具体化其中涉及的各种符号的意义: - 每个常量符号对应个体域内的某固定元素; - n元函数映射至从\( D^n \to D \); - n元谓词关联到\( D^n \to \{0,1\}\)[^1]。 #### 5. **永真式、永假式与可满足式** 依据不同赋值下能否始终成立来区分这三种类型的命题形式[^1]: - 如果无论怎样设置参数都能保持为真的,则称之为永真式; - 若无论如何都不能成为真实的状况,则定义成永假式 ; - 至少有一种情况使其有效的表述属于可满足式范畴. #### 6. **等值演算及相关性质** 通过一系列已知的有效变换法则实现两个看似不同的陈述间相互转换的过程叫做等值演算。其中包括但不限于以下几个方面: - 使用代换实例方法构建新的同等价值声明. - 应用消去量词等值式简化复杂结构. - 利用量词否定等值式处理含有否定量词的情况. - 运用量化器管辖范围扩展/缩减技巧调整适用区域边界. - 探讨有关联接符分配规律下的特殊情况讨论(如德摩根定律). #### 7. **前束范式** 如果能够找到一种方式把所有的量词移到整个表达式的最前端位置形成统一模式的话,那么这样的标准化表现就被命名为前束范式. ```python def is_prenex_normal_form(formula): """判断输入的一阶逻辑公式是否处于前束范式""" quantifiers = ['∀', '∃'] first_char = formula.strip()[0] if first_char in quantifiers: return True return False ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值